package com.zw.pdm.module.cost.mapper;

import com.zw.pdm.entity.basic.Org;
import com.zw.pdm.entity.cost.*;
import com.zw.pdm.module.report.model.Project;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;

/**
 * @Description:
 * @Author: China.wsg
 * @Date: 2020/11/10 14:15
 */
public interface CostMapper {

    /**
     * 项目编码是否存在
     *
     * @param proCode
     * @return
     */
    List<Project> findProjectByCode(String proCode);

    /**
     * 根据条件取得成本主表(SQL脚本不完整，需要继续修改，无需重新创建)
     *
     * @param cosSheet
     * @return
     */
    List<CosSheet> findCosSheetByQuery(CosSheet cosSheet);

    /**
     * 根据条件取得表单数量
     *
     * @param cosSheet
     * @return
     */
    int findCosSheetCountByQuery(CosSheet cosSheet);

    /**
     * 根据条件取得表单数量（排除自身）
     *
     * @param cosSheet
     * @return
     */
    int findCosSheetCountRemoveMyselfByQuery(CosSheet cosSheet);

    /**
     * 根据主键 取得接收数量
     *
     * @param ids
     * @return
     */
    int findCosSheetCountReceiveById(String ids);

    /**
     * 按 主单ID 查询成本明细
     *
     * @param cosSheetId
     * @return
     */
    List<CosDetail> findCosDetailByCosSheetIdAndDataType(@Param("cosSheetId") Integer cosSheetId, @Param("dataType") String dataType);

    /**
     * 按主单ID 删除成本明细
     *
     * @param cosSheet
     * @return
     */
    int delDsnCostDetailByCosSheetId(CosSheet cosSheet);

    /**
     * 按主单ID 删除机加明细
     *
     * @param cosSheet
     * @return
     */
    int delMachiningDetailByCosSheetId(CosSheet cosSheet);

    /**
     * 根据条件取得主单ID集合
     *
     * @param cosSheet
     * @return
     */
    List<Integer> findCosSheetIdByQuery(CosSheet cosSheet);

    /**
     * 更改成本主单状态（提交和驳回时使用）
     *
     * @param ids
     * @param status
     * @return
     */
    int updateCosSheetStatusSubmitOrRejectById(@Param("ids") String ids, @Param("rejectReason") String rejectReason, @Param("status") Integer status);

    /**
     * 更改成本主单状态（审核）
     *
     * @param ids
     * @param status
     * @return
     */
    int updateCosSheetStatusCheckById(@Param("ids") String ids, @Param("status") Integer status
            , @Param("verifyCode") String verifyCode, @Param("verifyName") String verifyName, @Param("verifyTime") Date verifyTime);

    /**
     * 成本信息输出查询
     *
     * @param cosSheet
     * @return
     */
    List<CosSheet> queryCossheet(CosSheet cosSheet);

    /**
     * 按 主单ID 查询机加成本明细
     *
     * @param cosSheetId
     * @return
     */
    List<CosMachiningDetail> findMachiningCosDetailByCosSheetIdAndDataTypeeetIdAndDataType(@Param("cosSheetId") Integer cosSheetId, @Param("dataType") String dataType);

    Org getOrg(Integer orgId);

    /**
     * 科长审核查询
     */
    List<CosSheet> findCosSheetByQueryLi(CosSheet cosSheet);

    /**
     * 所长审核查询
     */
    List<CosSheet> findCosSheetByQuerySuo(CosSheet cosSheet);

    /**
     * 获取机加工序
     * @return
     */
    List<CosProcess> findProcesses();

    List<CosProcessDetail> findEqu();

    /**
     * 根据工序名称查询设备
     * @return
     * @param name
     */
    List<CosProcessDetail> findBufByName(String name);
}
